from math import floor
from core.basic.skill import 技能
from core.basic.character import Character
from core.basic.skill import 主动技能, 被动技能


class 主动技能(主动技能):

    def 武器CD系数(self, 武器类型, 输出类型):
        return 1.0


class 技能0(被动技能):  # 基础精通
    名称 = '基础精通'
    倍率 = 1.0

    所在等级 = 1
    等级上限 = 200
    学习间隔 = 1
    等级精通 = 110

    关联技能 = ['基本攻击', '空斩打']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(self.倍率 * (0.463 + 0.089 * self.等级), 5)


class 技能1(主动技能):
    名称 = '基本攻击'
    所在等级 = 1
    等级上限 = 1
    基础等级 = 1
    CD = 1  # 也没有CD
    # 平x第一击
    data1 = [0, 94.27]
    hit1 = 1

    data2 = [0, 112.85]
    hit2 = 1

    data3 = [0, 138.57]
    hit3 = 1

    data4 = [0, 71.465]
    hit4 = 1

    TP成长 = 0.10
    TP上限 = 5

    def 等效百分比(self, **argv):
        char = argv.get('char', {})
        潜龙 = char.get_skill_by_name("潜龙")
        self.power3 = 潜龙.获取倍率("基本攻击")/100 + 1

        self.power4 = 潜龙.获取倍率("基本攻击冲击波")/100
        return super().等效百分比(**argv)


class 技能2(主动技能):
    名称 = '空斩打'
    所在等级 = 1
    等级上限 = 70
    学习间隔 = 3
    等级精通 = 60
    MP = [0, 0]
    # 空斩打本体
    data0 = [int(i) for i in [0, 103, 114, 125, 137, 148, 159, 171, 182, 194, 205, 217, 228, 239, 251, 261, 273, 285, 296, 308, 319, 331, 342, 353, 365, 375, 387, 399, 410, 422, 433, 445, 456,
                              467, 478, 489, 501, 513, 524, 536, 547, 559, 570, 580, 592, 603, 615, 627, 638, 650, 661, 673, 684, 694, 706, 717, 729, 741, 752, 764, 775, 787, 797, 808, 820, 831, 843, 855, 866, 878, 889]]
    hit0 = 1
    # 空斩打剑气
    data1 = [int(i) for i in [0, 103, 114, 125, 137, 148, 159, 171, 182, 194, 205, 217, 228, 239, 251, 261, 273, 285, 296, 308, 319, 331, 342, 353, 365, 375, 387, 399, 410, 422, 433, 445, 456,
                              467, 478, 489, 501, 513, 524, 536, 547, 559, 570, 580, 592, 603, 615, 627, 638, 650, 661, 673, 684, 694, 706, 717, 729, 741, 752, 764, 775, 787, 797, 808, 820, 831, 843, 855, 866, 878, 889]]
    hit1 = 1
    # 空斩打冲击波
    data2 = [int(i) for i in [0, 103, 114, 125, 137, 148, 159, 171, 182, 194, 205, 217, 228, 239, 251, 261, 273, 285, 296, 308, 319, 331, 342, 353, 365, 375, 387, 399, 410, 422, 433, 445, 456,
                              467, 478, 489, 501, 513, 524, 536, 547, 559, 570, 580, 592, 603, 615, 627, 638, 650, 661, 673, 684, 694, 706, 717, 729, 741, 752, 764, 775, 787, 797, 808, 820, 831, 843, 855, 866, 878, 889]]
    hit2 = 1
    CD = 2
    TP成长 = 0.10
    TP上限 = 7

    形态 = ['普通', '反身']

    def 形态变更(self, 形态, char):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        潜龙 = char.get_skill_by_name("潜龙")
        self.power0 = 1 + (潜龙.获取倍率("空斩打") / 100)
        self.power1 = 潜龙.获取倍率("空斩打剑气") / 100
        self.power2 = 潜龙.获取倍率("空斩打冲击波") / 100
        if 形态 == "普通":
            self.hit2 = 0
            pass
        if 形态 == "反身":
            self.hit2 = 1
        pass


class 技能3(主动技能):
    名称 = '落凤锤'
    所在等级 = 15
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [28, 308]
    data0 = [int(i) for i in [0, 489, 538, 590, 638, 688, 737, 788, 838, 888, 936, 985, 1036, 1086, 1134, 1185, 1234, 1284, 1336, 1383, 1432, 1481, 1532, 1583, 1632, 1682, 1729, 1782, 1830, 1881, 1930, 1979, 2030, 2080, 2128,
                              2180, 2232, 2280, 2328, 2377, 2428, 2478, 2526, 2578, 2626, 2678, 2729, 2775, 2826, 2875, 2924, 2976, 3024, 3076, 3124, 3174, 3225, 3273, 3322, 3373, 3422, 3473, 3522, 3571, 3620, 3671, 3719, 3770, 3819, 3871, 3919]]
    hit0 = 1
    data1 = [int(i) for i in [0, 1958, 2158, 2357, 2556, 2755, 2954, 3152, 3353, 3550, 3749, 3948, 4146, 4345, 4544, 4744, 4942, 5142, 5340, 5538, 5739, 5936, 6137, 6334, 6534, 6731, 6929, 7130, 7327, 7528, 7725, 7925, 8123, 8323, 8522, 8721,
                              8920, 9119, 9317, 9517, 9714, 9915, 10112, 10313, 10510, 10709, 10909, 11107, 11307, 11506, 11705, 11902, 12100, 12301, 12498, 12699, 12896, 13095, 13295, 13493, 13693, 13892, 14092, 14291, 14488, 14688, 14885, 15086, 15283, 15484, 15682]]
    hit1 = 1
    攻击次数2 = 1
    倍率 = 1.2  # 转职
    CD = 6
    TP成长 = 0.10
    TP上限 = 7


class 技能4(主动技能):
    名称 = '疾风打'
    所在等级 = 15
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [32, 343]
    data0 = [int(i) for i in [0, 344, 382, 414, 450, 485, 520, 557, 592, 626, 662, 698, 732, 766, 802, 835, 872, 907, 943, 975, 1013, 1049, 1082, 1119, 1152, 1187, 1223, 1259, 1292, 1328, 1365, 1397, 1434, 1470, 1503,
                              1541, 1574, 1610, 1644, 1680, 1715, 1750, 1784, 1822, 1856, 1890, 1926, 1961, 1995, 2031, 2066, 2099, 2136, 2173, 2206, 2243, 2279, 2311, 2348, 2383, 2417, 2452, 2488, 2520, 2558, 2592, 2627, 2663, 2698, 2734, 2769]]
    hit0 = 1
    data1 = [int(i) for i in [0, 1961, 2160, 2361, 2558, 2757, 2958, 3156, 3355, 3552, 3751, 3952, 4150, 4350, 4546, 4746, 4945, 5144, 5344, 5542, 5743, 5943, 6140, 6339, 6539, 6737, 6936, 7135, 7335, 7535, 7734, 7930, 8129, 8330, 8529, 8728,
                              8925, 9125, 9324, 9524, 9723, 9920, 10121, 10321, 10519, 10719, 10914, 11115, 11314, 11513, 11713, 11913, 12111, 12308, 12509, 12708, 12907, 13107, 13305, 13504, 13705, 13903, 14101, 14299, 14498, 14698, 14897, 15097, 15293, 15495, 15692]]
    hit1 = 1
    CD = 4.5
    TP成长 = 0.10
    TP上限 = 7


class 技能5(主动技能):
    名称 = '破魔符'
    所在等级 = 15
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [10, 448]
    data0 = [int(i) for i in [0, 241, 266, 290, 315, 339, 361, 387, 412, 435, 462, 485, 509, 534, 558, 583, 607, 631, 655, 678, 706, 729, 753, 778, 802, 827, 851, 876, 899, 926, 950, 973, 999, 1022, 1046, 1072, 1097,
                              1121, 1146, 1170, 1195, 1218, 1243, 1266, 1293, 1316, 1341, 1365, 1390, 1414, 1438, 1463, 1486, 1510, 1537, 1560, 1584, 1610, 1633, 1658, 1682, 1708, 1733, 1757, 1782, 1804, 1830, 1854, 1877, 1905, 1928]]
    hit0 = 6
    CD = 2
    TP成长 = 0.10
    TP上限 = 7


# 这部分要大改
class 技能6(被动技能):
    名称 = '潜龙'
    所在等级 = 15
    等级上限 = 11
    基础等级 = 1
    基本攻击 = [int(i) for i in [0, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 148, 152,
                             156, 160, 164, 168, 172, 176, 180, 184, 188, 192, 196, 200, 204, 208, 212, 216, 220, 224, 228, 232, 236, 240, 244,
                             248, 252, 256, 260, 264, 268, 272, 276, 280, 284, 288, 292, 296, 300, 304, 308, 312, 316, 320, 324, 328, 332, 336]]
    基本攻击冲击波 = [int(i) for i in [0, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410,
                                420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640,
                                650, 660, 670, 680, 690, 700, 710, 720, 730, 740, 750, 760, 770, 780, 790, 800, 810, 820, 830, 840, 850, 860, 870,
                                880, 890]]
    巨旋风近身 = [int(i) for i in [0, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79,
                              81, 83, 85, 87, 89, 91, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 113, 115, 117, 119, 121, 123, 125, 127, 129,
                              131, 133, 135, 137, 139, 141, 143, 145, 147, 149, 151, 153, 155, 157, 159, 161, 163]]
    巨旋风远程 = [int(i) for i in [0, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136,
                              140, 144, 148, 152, 156, 160, 164, 168, 172, 176, 180, 184, 188, 192, 196, 200, 204, 208, 212, 216, 220, 224, 228,
                              232, 236, 240, 244, 248, 252, 256, 260, 264, 268, 272, 276, 280, 284, 288, 292, 296, 300, 304, 308, 312, 316]]
    巨旋风时间 = [int(i) for i in [0, 1300, 1350, 1400, 1450, 1500, 1550, 1600, 1650, 1700, 1750, 1800, 1850, 1900, 1950, 2000, 2050, 2100, 2150,
                              2200, 2250, 2300, 2350, 2400, 2450, 2500, 2550, 2600, 2650, 2700, 2750, 2800, 2850, 2900, 2950, 3000, 3050, 3100,
                              3150, 3200, 3250, 3300, 3350, 3400, 3450, 3500, 3550, 3600, 3650, 3700, 3750, 3800, 3850, 3900, 3950, 4000, 4050,
                              4100, 4150, 4200, 4250, 4300, 4350, 4400, 4450, 4500, 4550, 4600, 4650, 4700, 4750]]
    空斩打 = [int(i) for i in [0, 40, 42, 45, 47, 50, 52, 55, 57, 60, 62, 65, 67, 70, 72, 75, 77, 80, 82, 85, 87, 90, 92, 95, 97, 100, 102, 105,
                            107, 110, 112, 115, 117, 120, 122, 125, 127, 130, 132, 135, 137, 140, 142, 145, 147, 150, 152, 155, 157, 160, 162,
                            165, 167, 170, 172, 175, 177, 180, 182, 185, 187, 190, 192, 195, 197, 200, 202, 205, 207, 210, 212]]
    空斩打剑气 = [int(i) for i in [0, 100, 104, 110, 114, 120, 124, 130, 134, 140, 144, 150, 154, 160, 164, 170, 174, 180, 184, 190, 194, 200, 204, 210, 214, 220, 224, 230, 234, 240, 244, 250, 254, 260, 264,
                              270, 274, 280, 284, 290, 294, 300, 304, 310, 314, 320, 324, 330, 334, 340, 344, 350, 354, 360, 364, 370, 374, 380, 384, 390, 394, 400, 404, 410, 414, 420, 424, 430, 434, 440, 444]]
    空斩打冲击波 = [int(i) for i in [0, 100, 104, 110, 114, 120, 124, 130, 134, 140, 144, 150, 154, 160, 164, 170, 174, 180, 184, 190, 194, 200, 204, 210, 214, 220, 224, 230, 234, 240, 244, 250, 254, 260, 264,
                               270, 274, 280, 284, 290, 294, 300, 304, 310, 314, 320, 324, 330, 334, 340, 344, 350, 354, 360, 364, 370, 374, 380, 384, 390, 394, 400, 404, 410, 414, 420, 424, 430, 434, 440, 444]]
    无双击 = [int(i) for i in [0, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 102, 105, 108,
                            111, 114, 117, 120, 123, 126, 129, 132, 135, 138, 141, 144, 147, 150, 153, 156, 159, 162, 165, 168, 171, 174, 177,
                            180, 183, 186, 189, 192, 195, 198, 201, 204, 207, 210, 213, 216, 219, 222, 225, 228, 231, 234, 237]]

    def 获取倍率(self, name):
        倍率 = getattr(self, name, [0]*15)
        return 倍率[self.等级]


class 技能7(主动技能):
    名称 = '断空捶击'
    所在等级 = 20
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [32, 343]
    data0 = [int(i) for i in [0, 103, 115, 124, 136, 145, 157, 167, 179, 189, 201, 210, 220, 232, 241, 253, 265, 276, 284, 296, 305, 317, 327, 339, 347, 360, 371, 382, 392, 401, 413, 422, 434,
                              443, 455, 465, 477, 486, 498, 508, 520, 528, 538, 550, 563, 573, 584, 593, 603, 615, 624, 636, 644, 659, 667, 679, 690, 700, 711, 719, 731, 741, 754, 765, 775, 784, 796, 805, 817, 826, 838]]
    hit0 = 1
    data1 = [int(i) for i in [0, 943, 1038, 1136, 1231, 1326, 1421, 1519, 1614, 1710, 1804, 1900, 1997, 2093, 2190, 2283, 2380, 2476, 2573, 2668, 2763, 2859, 2956, 3051, 3147, 3242, 3336, 3433, 3528, 3623, 3718, 3816, 3911, 4007,
                              4101, 4199, 4294, 4390, 4485, 4582, 4677, 4773, 4868, 4965, 5060, 5156, 5252, 5348, 5445, 5539, 5635, 5731, 5826, 5924, 6018, 6114, 6209, 6307, 6403, 6497, 6592, 6688, 6786, 6881, 6975, 7071, 7169, 7264, 7361, 7455, 7551]]
    hit1 = 1
    data2 = [int(i) for i in [0, 1047, 1153, 1260, 1366, 1476, 1580, 1686, 1795, 1899, 2005, 2112, 2218, 2324, 2431, 2538, 2644, 2752, 2857, 2963, 3071, 3175, 3281, 3390, 3494, 3601, 3710, 3816, 3920, 4028, 4134, 4239, 4347, 4453,
                              4558, 4666, 4773, 4879, 4986, 5092, 5198, 5305, 5411, 5517, 5624, 5729, 5837, 5945, 6050, 6155, 6264, 6368, 6474, 6583, 6687, 6793, 6903, 7007, 7113, 7221, 7326, 7432, 7540, 7645, 7751, 7858, 7963, 8071, 8179, 8285, 8389]]
    hit2 = 1
    CD = 4.5
    TP成长 = 0.10
    TP上限 = 7


class 技能8(主动技能):
    名称 = '升天阵'
    所在等级 = 20
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [28, 308]
    data0 = [int(i) for i in [0, 2271, 2500, 2729, 2961, 3190, 3420, 3651, 3883, 4113, 4342, 4571, 4803, 5034, 5264, 5492, 5726, 5954, 6183, 6415, 6647, 6876, 7106, 7338, 7567, 7798, 8028, 8260, 8489, 8718, 8947, 9179, 9409, 9640, 9869, 10101, 10331,
                              10560, 10791, 11024, 11253, 11483, 11715, 11943, 12173, 12404, 12636, 12865, 13095, 13324, 13556, 13787, 14017, 14246, 14478, 14708, 14936, 15167, 15399, 15628, 15858, 16089, 16321, 16548, 16781, 17011, 17242, 17472, 17703, 17935, 18162]]
    hit0 = 1
    倍率 = 1.2  # 转职
    CD = 5
    TP成长 = 0.10
    TP上限 = 7


class 技能9(被动技能):
    名称 = '巨兵精通'
    所在等级 = 20
    等级上限 = 40
    基础等级 = 20
    冷却关联技能 = ['所有']
    非冷却关联技能 = ['苍龙逐日', '真龙焚天', '雷鸣怒海·火啸山崩']

    def 物理攻击力倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.1 + 0.01 * self.等级, 5)

    def 魔法攻击力倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.1 + 0.01 * self.等级, 5)

    def CD缩减倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return 0.9


class 技能10(主动技能):
    名称 = '黑暗切割'
    所在等级 = 25
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [40, 462]
    data0 = [int(i) for i in [0, 1026, 1129, 1231, 1336, 1441, 1545, 1649, 1753, 1855, 1961, 2065, 2169, 2273, 2377, 2481, 2587, 2689, 2793, 2898, 3001, 3106, 3211, 3315, 3419, 3523, 3626, 3730, 3834, 3939, 4043, 4147, 4251, 4356,
                              4458, 4562, 4668, 4772, 4876, 4979, 5082, 5188, 5293, 5396, 5500, 5603, 5708, 5813, 5917, 6021, 6124, 6228, 6334, 6436, 6541, 6645, 6749, 6854, 6958, 7062, 7164, 7270, 7374, 7478, 7582, 7686, 7789, 7893, 7996, 8103, 8206]]
    hit0 = 1
    data1 = [int(i) for i in [0, 2390, 2637, 2879, 3122, 3362, 3605, 3850, 4094, 4335, 4578, 4822, 5065, 5306, 5549, 5793, 6035, 6279, 6521, 6763, 7006, 7250, 7491, 7734, 7978, 8222, 8463, 8706, 8949, 9191, 9433, 9678, 9921, 10164, 10405, 10649, 10892,
                              11136, 11377, 11620, 11862, 12106, 12348, 12590, 12834, 13079, 13321, 13563, 13806, 14049, 14291, 14535, 14777, 15019, 15263, 15506, 15749, 15993, 16234, 16477, 16721, 16963, 17205, 17447, 17691, 17934, 18175, 18419, 18662, 18906, 19147]]
    hit1 = 1
    CD = 6
    TP成长 = 0.10
    TP上限 = 7


class 技能11(主动技能):
    名称 = '朱雀符'
    所在等级 = 25
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [40, 462]
    data0 = [int(i) for i in [0, 394, 435, 473, 514, 554, 596, 634, 674, 715, 755, 795, 834, 876, 916, 956, 995, 1035, 1076, 1115, 1156, 1196, 1237, 1276, 1315, 1356, 1395, 1437, 1476, 1517,
                              1556, 1597, 1636, 1676, 1716, 1759, 1798, 1836, 1875, 1915, 1955, 1995, 2035, 2078, 2117, 2158, 2197, 2238, 2277, 2318, 2358, 2398, 2438, 2478, 2518, 2558, 2597, 2639, 2678, 2719, 2758]]
    hit0 = 10
    CD = 6.5
    TP成长 = 0.10
    TP上限 = 7


class 技能12(主动技能):
    名称 = '星落打'
    所在等级 = 25
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [60, 756]
    data0 = [int(i) for i in [0, 6424, 7076, 7728, 8379, 9029, 9684, 10335, 10987, 11639, 12291, 12942, 13595, 14246, 14897, 15549, 16201, 16853, 17504, 18156, 18810, 19459, 20112, 20764, 21415, 22067, 22719, 23372, 24023, 24673, 25326, 25977, 26630, 27283, 27934,
                              28585, 29235, 29888, 30539, 31193, 31846, 32497, 33148, 33801, 34451, 35104, 35755, 36407, 37059, 37710, 38363, 39014, 39665, 40318, 40970, 41622, 42273, 42926, 43577, 44230, 44880, 45532, 46184, 46835, 47488, 48139, 48792, 49445, 50094, 50747, 51398]]
    CD = 12
    TP成长 = 0.10
    TP上限 = 7


class 技能13(主动技能):
    名称 = '巨旋风'
    所在等级 = 30
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [65, 686]
    # 近身数据，习得三觉被动后该部分被删除
    # data0 = [int(i) for i in [0, 379, 417, 456, 494, 533, 572, 610, 649, 688, 727, 765, 804, 842, 881, 917, 957, 995, 1034, 1072, 1111, 1149, 1188, 1226, 1265, 1303, 1342, 1380, 1419, 1457, 1496, 1534, 1573, 1611, 1650,
    #   1688, 1727, 1765, 1801, 1840, 1878, 1917, 1955, 1994, 2032, 2071, 2109, 2148, 2186, 2225, 2263, 2305, 2344, 2382, 2421, 2459, 2498, 2535, 2574, 2612, 2651, 2688, 2727, 2765, 2804, 2842, 2881, 2919, 2958, 2996, 3035]]
    # hit0 = 0
    # 远程数据，习得三觉被动后该部分hit数发生变化且实际伤害与面板数据不一致
    # 原数据*0.93539
    data0 = [0, 226, 247, 271, 292, 317, 340, 361, 384, 407, 430, 451, 476, 498, 522, 545, 566, 590, 613, 636, 656, 681, 703, 728, 752, 773, 795, 818, 842, 864, 886, 909, 933, 955, 979, 1003, 1024, 1048,
             1070, 1094, 1115, 1137, 1160, 1184, 1209, 1231, 1253, 1275, 1299, 1322, 1343, 1366, 1390, 1413, 1434, 1459, 1482, 1505, 1528, 1550, 1573, 1596, 1618, 1641, 1662, 1686, 1710, 1732, 1756, 1778, 1801]
    # 实际从20-23不等;算法应该是基础持续时间2s+潜龙增加的持续时间=最终持续时间，间隔也不是0.3s而是0.15s；最终段数为最终持续时间/0.15s；
    # 例如潜龙3级时为2+1.4=3.4s,段数为22.67;但由于巨旋风飞行过程中的时间也算在内，所以会出现20-23hit之间，最好是用round(计算结果-2)计入
    hit0 = 0
    # power0 = 0.93539  # 测试得出的实际倍率
    CD = 8
    TP成长 = 0.10
    TP上限 = 7

    攻击间隔 = 0.15
    持续时间 = 2

    def 等效百分比(self, **argv):
        self.hit0 = floor(self.持续时间/self.攻击间隔-2)
        char = argv.get('char', {})
        潜龙 = char.get_skill_by_name("潜龙")
        self.持续时间 = 2 + 潜龙.获取倍率("巨旋风时间")/1000
        self.power0 = 1 + 潜龙.获取倍率("巨旋风远程")/100
        return super().等效百分比(**argv)


class 技能14(主动技能):
    名称 = '式神：白虎'
    备注 = '单次'
    所在等级 = 30
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [65, 686]
    hit0 = [int(i) for i in [0, 309, 342, 374, 407, 437, 469, 499, 532, 563, 595, 626, 659, 689, 722, 751, 783, 816, 848, 880, 910, 942, 973, 1006, 1037, 1068, 1100, 1132, 1164, 1194, 1227, 1258, 1290, 1322, 1352, 1383,
                             1416, 1448, 1479, 1510, 1542, 1573, 1606, 1635, 1669, 1700, 1733, 1763, 1795, 1825, 1858, 1890, 1920, 1952, 1984, 2015, 2047, 2080, 2110, 2142, 2174, 2205, 2236, 2267, 2301, 2332, 2363, 2394, 2426, 2458, 2489]]
    hit0 = 1
    CD = 10  # 不是攻击间隔
    TP成长 = 0.10
    TP上限 = 7


class 技能15(被动技能):
    名称 = '驱魔之书'
    所在等级 = 30
    等级上限 = 40
    基础等级 = 10
    关联技能 = ['真龙焚天', '式神封灵阵', '逆龙七杀', '逆鳞震', '灭魂符', '苍龙逐日', '式神：殇', '疾空旋风破', '落雷符', '式神：白虎',
            '狂乱锤击', '疾风打', '朱雀符', '黑暗切割', '升天阵', '落凤锤', '破魔符', '式神灭却·合', '雷鸣怒海·火啸山崩']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1 + 0.015 * self.等级, 5)


class 技能16(主动技能):
    名称 = '狂乱锤击'
    所在等级 = 35
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60

    data0 = [int(i) for i in [0, 1366, 1504, 1644, 1782, 1919, 2058, 2197, 2335, 2474, 2612, 2749, 2889, 3027, 3166, 3304, 3443, 3583, 3720, 3859, 3997, 4135, 4275, 4413, 4550, 4689, 4828, 4967, 5105, 5244, 5383, 5522, 5662, 5799,
                              5937, 6076, 6214, 6354, 6492, 6629, 6768, 6907, 7045, 7184, 7322, 7459, 7599, 7737, 7876, 8016, 8155, 8293, 8433, 8570, 8708, 8847, 8986, 9124, 9263, 9400, 9538, 9678, 9816, 9955, 10093, 10232, 10372, 10509, 10648, 10786, 10924]]
    hit0 = 4
    data1 = [int(i) for i in [0, 1609, 1772, 1936, 2099, 2260, 2425, 2588, 2752, 2915, 3078, 3241, 3404, 3566, 3731, 3894, 4058, 4221, 4383, 4548, 4710, 4873, 5038, 5199, 5364, 5527, 5690, 5855, 6016, 6180, 6343, 6506, 6671, 6833, 6997,
                              7161, 7322, 7487, 7649, 7812, 7977, 8140, 8301, 8465, 8628, 8793, 8956, 9119, 9282, 9444, 9609, 9772, 9934, 10099, 10261, 10424, 10589, 10750, 10915, 11078, 11240, 11404, 11567, 11732, 11895, 12057, 12220, 12383, 12548, 12711, 12874]]
    hit1 = 1
    data2 = [int(i) for i in [0, 1180, 1300, 1418, 1540, 1659, 1777, 1898, 2018, 2136, 2257, 2377, 2496, 2617, 2735, 2855, 2976, 3094, 3216, 3335, 3454, 3573, 3694, 3813, 3934, 4054, 4172, 4293, 4412, 4532, 4652, 4771, 4891, 5012,
                              5130, 5249, 5371, 5490, 5608, 5730, 5849, 5970, 6088, 6208, 6329, 6447, 6568, 6688, 6807, 6926, 7047, 7166, 7285, 7407, 7526, 7644, 7764, 7885, 8003, 8124, 8244, 8363, 8484, 8602, 8723, 8843, 8961, 9083, 9202, 9320, 9442]]
    hit2 = 1
    CD = 14
    TP成长 = 0.10
    TP上限 = 5

    MP = [180, 1512]
    无色消耗 = 1


class 技能17(主动技能):
    名称 = '落雷符'
    所在等级 = 35
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60

    data0 = [int(i) for i in [0, 1509, 1663, 1817, 1969, 2123, 2275, 2428, 2582, 2736, 2890, 3042, 3195, 3349, 3501, 3655, 3807, 3960, 4115, 4267, 4421, 4575, 4726, 4880, 5033, 5188, 5341, 5494, 5649, 5800, 5954, 6105, 6262, 6415, 6568,
                              6720, 6873, 7028, 7179, 7332, 7489, 7639, 7794, 7947, 8100, 8254, 8407, 8562, 8714, 8866, 9019, 9173, 9327, 9479, 9630, 9787, 9940, 10093, 10246, 10398, 10552, 10705, 10859, 11012, 11165, 11320, 11471, 11625, 11777, 11931, 12085]]
    hit0 = 8
    感电data0 = [int(i) for i in [0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                                10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10]]
    感电hit0 = 8
    CD = 1
    # 1级CD 20 60级CD 15.714
    CD_list = [0, 20.0, 19.927, 19.855, 19.782, 19.709, 19.637, 19.564, 19.491, 19.419, 19.346, 19.274, 19.201, 19.128, 19.056, 18.983, 18.91, 18.838, 18.765, 18.692, 18.62, 18.547, 18.474, 18.402, 18.329, 18.257, 18.184, 18.111, 18.039, 17.966,
               17.893, 17.821, 17.748, 17.675, 17.603, 17.53, 17.457, 17.385, 17.312, 17.24, 17.167, 17.094, 17.022, 16.949, 16.876, 16.804, 16.731, 16.658, 16.586, 16.513, 16.44, 16.368, 16.295, 16.223, 16.15, 16.077, 16.005, 15.932, 15.859, 15.787, 15.714]
    TP成长 = 0.10
    TP上限 = 5

    def 等效CD(self, **argv):
        self.CD = self.CD_list[self.等级]
        return super().等效CD(**argv)

    是否有护石 = 1

    MP = [200, 1680]
    无色消耗 = 1

    def 装备护石(self):
        self.hit0 = 4
        self.感电hit0 = 4
        self.power0 = 2.38
        self.CDR *= 0.85


class 技能18(主动技能):
    名称 = '疾空旋风破'
    所在等级 = 40
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60

    data0 = [int(i) for i in [0, 1127, 1241, 1355, 1470, 1585, 1698, 1813, 1928, 2041, 2156, 2272, 2384, 2499, 2614, 2730, 2845, 2957, 3072, 3186, 3301, 3416, 3528, 3642, 3758, 3871, 3986, 4100, 4215, 4329, 4446, 4559, 4671, 4789,
                              4902, 5017, 5132, 5244, 5360, 5473, 5588, 5703, 5816, 5931, 6046, 6158, 6273, 6390, 6502, 6616, 6734, 6847, 6962, 7074, 7189, 7305, 7419, 7533, 7647, 7760, 7877, 7991, 8105, 8218, 8334, 8448, 8564, 8677, 8789, 8907, 9020]]
    hit0 = 9  # 基础7，潜龙固定+2
    data1 = [int(i) for i in [0, 2357, 2595, 2835, 3074, 3313, 3551, 3792, 4031, 4269, 4509, 4748, 4987, 5229, 5467, 5704, 5946, 6185, 6423, 6663, 6902, 7140, 7381, 7620, 7859, 8097, 8337, 8576, 8815, 9055, 9293, 9532, 9773, 10011, 10250, 10490, 10728,
                              10967, 11208, 11447, 11685, 11925, 12164, 12403, 12641, 12881, 13120, 13359, 13599, 13838, 14077, 14317, 14555, 14794, 15034, 15272, 15511, 15752, 15991, 16229, 16470, 16708, 16947, 17186, 17427, 17664, 17903, 18144, 18382, 18621, 18862]]
    hit1 = 1
    CD = 20
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1

    MP = [200, 1680]
    无色消耗 = 1

    def 装备护石(self):
        self.hit0 += 1
        self.倍率 *= 1.17
        self.CDR *= 0.85


class 技能19(主动技能):
    名称 = '式神：殇'
    所在等级 = 45
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60

    data0 = [int(i) for i in [0, 1255, 1383, 1510, 1637, 1763, 1892, 2018, 2147, 2273, 2401, 2530, 2655, 2784, 2911, 3038, 3167, 3293, 3421, 3547, 3675, 3804, 3930, 4059, 4184, 4313, 4442, 4567, 4695, 4822, 4949, 5078, 5205, 5333,
                              5458, 5587, 5716, 5841, 5969, 6096, 6225, 6354, 6479, 6607, 6732, 6860, 6988, 7117, 7245, 7369, 7498, 7624, 7752, 7879, 8007, 8136, 8261, 8390, 8516, 8644, 8771, 8899, 9026, 9154, 9281, 9408, 9536, 9664, 9791, 9918, 10046]]
    hit0 = 14
    data1 = [int(i) for i in [0, 5556, 6119, 6685, 7247, 7812, 8374, 8939, 9501, 10067, 10629, 11195, 11757, 12321, 12883, 13449, 14012, 14577, 15139, 15704, 16266, 16831, 17394, 17959, 18522, 19086, 19648, 20214, 20776, 21341, 21904, 22469, 23031, 23595, 24158,
                              24724, 25286, 25851, 26413, 26979, 27541, 28106, 28668, 29233, 29797, 30360, 30923, 31489, 32052, 32615, 33177, 33742, 34307, 34871, 35434, 35998, 36561, 37124, 37689, 38255, 38817, 39380, 39943, 40507, 41071, 41635, 42199, 42764, 43326, 43889, 44452]]
    hit1 = 1
    CD = 45
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1

    MP = [360, 3024]
    无色消耗 = 2

    def 装备护石(self):
        self.hit0 = 0
        self.power1 = 5.16
        self.CDR *= 0.95


class 技能20(主动技能):
    名称 = '无双击'
    所在等级 = 45
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60

    data0 = [int(i) for i in [0, 996, 1096, 1197, 1299, 1399, 1499, 1603, 1703, 1804, 1905, 2006, 2108, 2208, 2309, 2410, 2512, 2613, 2714, 2814, 2915, 3018, 3118, 3219, 3321, 3420, 3521, 3625, 3724, 3825, 3927, 4026, 4128, 4230,
                              4330, 4431, 4534, 4635, 4735, 4837, 4938, 5037, 5140, 5241, 5340, 5442, 5543, 5643, 5746, 5847, 5947, 6049, 6151, 6252, 6352, 6452, 6553, 6655, 6756, 6857, 6958, 7059, 7160, 7262, 7363, 7464, 7564, 7664, 7766, 7868, 7968]]
    hit0 = 1
    data1 = [int(i) for i in [0, 13235, 14578, 15919, 17263, 18606, 19950, 21291, 22633, 23976, 25317, 26662, 28004, 29348, 30689, 32034, 33376, 34719, 36060, 37403, 38746, 40087, 41432, 42774, 44117, 45458, 46804, 48146, 49489, 50830, 52173, 53515, 54860, 56203, 57545,
                              58887, 60229, 61574, 62915, 64258, 65600, 66943, 68286, 69630, 70972, 72314, 73656, 75002, 76344, 77685, 79028, 80370, 81714, 83055, 84400, 85742, 87085, 88426, 89771, 91113, 92457, 93798, 95141, 96484, 97825, 99169, 100511, 101854, 103197, 104540, 105883]]
    hit1 = 1
    CD = 40
    TP成长 = 0.10
    TP上限 = 5

    MP = [360, 3024]
    无色消耗 = 2

    形态 = ["烈焰", "圣光"]

    CP武器 = False

    def 形态变更(self, 形态, char: Character):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "烈焰":
            self.power0 = 1.2
            self.power1 = 1.2
        if 形态 == "圣光":
            if self.CP武器:
                self.power0 = 1.2
                self.power1 = 1.2
            else:
                self.power0 = 1.0
                self.power1 = 1.0


class 技能21(被动技能):
    名称 = '斗志散发'
    所在等级 = 48
    等级上限 = 50
    学习间隔 = 3
    等级精通 = 40

    关联技能 = ['所有']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.07 + 0.01 * self.等级, 5)


class 技能22(主动技能):
    名称 = '苍龙逐日'
    所在等级 = 50
    等级上限 = 50
    学习间隔 = 5
    等级精通 = 40

    data0 = [int(i) for i in [0, 57427, 70743, 84059, 97377, 110696, 124011, 137327, 150644, 163962, 177279, 190595, 203911, 217228, 230544, 243862, 257179, 270495, 283811, 297127, 310443, 323761, 337078, 350394, 363710, 377027, 390346, 403662, 416980, 430295, 443611, 456927, 470244, 483563, 496879,
                              510194, 523510, 536828, 550146, 563462, 576776, 590092, 603411, 616728, 630046, 643363, 656677, 669995, 683312, 696629, 709946, 723262, 736578, 749896, 763212, 776528, 789844, 803160, 816477, 829795, 843111, 856428, 869745, 883060, 896379, 909695, 923014, 936330, 949647, 962960, 976279]]
    hit0 = 1
    CD = 145

    MP = [900, 7560]
    无色消耗 = 5

    def 等效百分比(self, **argv):
        return super().等效百分比(**argv) * (1.1 if self.等级 >= 9 else 1)


class 技能23(主动技能):
    名称 = '灭魂符'
    所在等级 = 60
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40

    data0 = [int(i) for i in [0, 2120, 2336, 2551, 2765, 2980, 3196, 3412, 3626, 3842, 4057, 4274, 4488, 4703, 4917, 5135, 5349, 5564, 5778,
                              5997, 6211, 6423, 6640, 6854, 7070, 7285, 7500, 7714, 7930, 8146, 8361, 8576, 8791, 9007, 9223, 9437, 9652, 9867, 10084, 10299, 10514]]
    hit0 = 10
    CD = 30
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1

    MP = [200, 1680]
    无色消耗 = 1

    def 装备护石(self):
        self.倍率 *= 1.35
        self.CDR *= 0.9


class 技能24(主动技能):
    名称 = '逆鳞震'
    所在等级 = 70
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40

    data0 = [int(i) for i in [0, 34265, 37741, 41222, 44691, 48171, 51647, 55128, 58607, 62078, 65561, 69035, 72512, 75984, 79465, 82940, 86420, 89890, 93371, 96850, 100322, 103802, 107276, 110757, 114228, 117708, 121185, 124663, 128144, 131613, 135096, 138572, 142049, 145522, 149001, 152475,
                              155950, 159429, 162911, 166388, 169859, 173339, 176815, 180292, 183765, 187247, 190719, 194201, 197671, 201152, 204630, 208106, 211582, 215057, 218536, 222008, 225489, 228965, 232444, 235917, 239395, 242878, 246349, 249828, 253301, 256783, 260256, 263737, 267209, 270687, 274163]]
    hit0 = 1
    CD = 50
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1

    MP = [800, 1680]
    无色消耗 = 2

    def 装备护石(self):
        self.倍率 *= 1.28


class 技能25(主动技能):
    名称 = '逆龙七杀'
    所在等级 = 75
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40

    data0 = [int(i) for i in [0, 1594, 1757, 1917, 2081, 2243, 2404, 2566, 2729, 2889, 3051, 3213, 3375, 3538, 3699, 3860, 4022, 4185, 4344, 4508, 4671, 4834, 4994, 5156, 5318, 5479, 5640, 5803, 5965, 6126, 6290, 6449, 6612, 6775, 6935,
                              7097, 7261, 7421, 7584, 7745, 7906, 8069, 8230, 8392, 8555, 8717, 8879, 9040, 9202, 9365, 9525, 9688, 9850, 10012, 10172, 10336, 10497, 10657, 10821, 10982, 11145, 11307, 11467, 11630, 11793, 11952, 12116, 12278, 12441, 12602, 12762]]
    hit0 = 1
    data1 = [int(i) for i in [0, 3192, 3513, 3837, 4161, 4486, 4809, 5132, 5456, 5780, 6104, 6428, 6752, 7074, 7400, 7723, 8047, 8370, 8693, 9016, 9342, 9664, 9987, 10311, 10636, 10960, 11283, 11606, 11932, 12255, 12578, 12902, 13227, 13551, 13872, 14196,
                              14521, 14845, 15167, 15491, 15816, 16140, 16463, 16786, 17110, 17436, 17758, 18082, 18406, 18728, 19052, 19376, 19700, 20024, 20347, 20671, 20996, 21318, 21642, 21965, 22290, 22614, 22938, 23259, 23585, 23908, 24232, 24555, 24880, 25203, 25527]]
    hit1 = 1
    data2 = [int(i) for i in [0, 4785, 5271, 5756, 6242, 6727, 7213, 7699, 8185, 8669, 9157, 9641, 10127, 10613, 11096, 11585, 12068, 12553, 13042, 13527, 14013, 14498, 14982, 15469, 15954, 16439, 16926, 17409, 17896, 18381, 18866, 19354, 19839, 20323, 20809,
                              21295, 21781, 22266, 22752, 23239, 23722, 24210, 24695, 25181, 25667, 26152, 26636, 27122, 27608, 28094, 28580, 29065, 29550, 30035, 30520, 31008, 31493, 31979, 32463, 32948, 33435, 33920, 34405, 34893, 35376, 35865, 36349, 36834, 37321, 37806, 38292]]
    hit2 = 1
    data3 = [int(i) for i in [0, 6380, 7030, 7675, 8324, 8971, 9619, 10265, 10913, 11561, 12208, 12856, 13504, 14152, 14798, 15445, 16093, 16740, 17388, 18035, 18684, 19329, 19978, 20624, 21274, 21919, 22569, 23215, 23862, 24510, 25157, 25805, 26451, 27100, 27747,
                              28396, 29042, 29688, 30337, 30983, 31632, 32279, 32928, 33573, 34223, 34868, 35516, 36163, 36811, 37459, 38106, 38754, 39402, 40047, 40696, 41342, 41991, 42637, 43286, 43933, 44580, 45227, 45876, 46523, 47171, 47818, 48465, 49113, 49759, 50406, 51055]]
    hit3 = 1
    data4 = [int(i) for i in [0, 7978, 8785, 9596, 10405, 11213, 12023, 12833, 13642, 14451, 15261, 16070, 16879, 17689, 18497, 19306, 20116, 20925, 21733, 22543, 23354, 24163, 24972, 25782, 26590, 27401, 28209, 29018, 29829, 30636, 31445, 32256, 33064, 33874,
                              34682, 35494, 36303, 37112, 37922, 38731, 39540, 40349, 41157, 41968, 42777, 43584, 44395, 45204, 46013, 46823, 47632, 48441, 49252, 50061, 50870, 51681, 52488, 53297, 54107, 54916, 55726, 56534, 57343, 58154, 58963, 59772, 60580, 61390, 62201, 63008, 63819]]
    hit4 = 1
    data5 = [int(i) for i in [0, 9572, 10542, 11514, 12486, 13456, 14427, 15399, 16372, 17340, 18313, 19285, 20255, 21225, 22196, 23168, 24140, 25111, 26081, 27052, 28026, 28996, 29967, 30939, 31909, 32879, 33850, 34823, 35794, 36763, 37735, 38706, 39680, 40650,
                              41621, 42592, 43563, 44534, 45503, 46476, 47448, 48419, 49389, 50361, 51332, 52304, 53275, 54246, 55217, 56188, 57159, 58130, 59102, 60073, 61042, 62014, 62988, 63959, 64929, 65900, 66870, 67842, 68813, 69784, 70755, 71727, 72697, 73668, 74641, 75613, 76581]]
    hit5 = 1
    data6 = [int(i) for i in [0, 33518, 36918, 40319, 43718, 47119, 50520, 53920, 57321, 60723, 64120, 67521, 70921, 74324, 77724, 81124, 84524, 87925, 91324, 94725, 98125, 101527, 104926, 108326, 111727, 115129, 118530, 121927, 125328, 128729, 132130, 135531, 138931, 142330, 145732, 149132,
                              152531, 155932, 159334, 162733, 166134, 169535, 172936, 176336, 179737, 183135, 186536, 189937, 193337, 196738, 200140, 203538, 206940, 210338, 213741, 217141, 220541, 223941, 227342, 230743, 234143, 237543, 240942, 244343, 247743, 251144, 254544, 257947, 261346, 264747, 268147]]
    hit6 = 1
    CD = 50
    是否有护石 = 1

    MP = [800, 6000]
    无色消耗 = 5

    def 装备护石(self):
        self.倍率 *= 1.04*1.24


class 技能26(被动技能):
    名称 = '式神之力'
    所在等级 = 75
    等级上限 = 50
    学习间隔 = 3
    等级精通 = 40

    def 物理攻击力倍率进图(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.08 + 0.02 * self.等级, 5)

    def 魔法攻击力倍率进图(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.08 + 0.02 * self.等级, 5)


class 技能27(被动技能):
    名称 = '脉轮：式神'
    所在等级 = 75
    等级上限 = 11
    学习间隔 = 50
    等级精通 = 1

    关联技能 = ['所有']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.34 + 0.02 * self.等级, 5)


class 技能28(主动技能):
    名称 = '式神封灵阵'
    所在等级 = 80
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40
    data0 = [int(i) for i in [0, 3498, 3846, 4203, 4561, 4913, 5269, 5625, 5976, 6332, 6687, 7042, 7399, 7752, 8104, 8459, 8816, 9169, 9524, 9879, 10233, 10590, 10943, 11301, 11651, 12007, 12365, 12716, 13073, 13427, 13783, 14136, 14490, 14844, 15200, 15557,
                              15907, 16262, 16620, 16970, 17327, 17681, 18037, 18394, 18748, 19103, 19454, 19813, 20168, 20516, 20874, 21231, 21585, 21940, 22295, 22648, 23002, 23360, 23712, 24069, 24422, 24775, 25132, 25486, 25837, 26195, 26549, 26906, 27261, 27618, 27971]]
    hit0 = 10
    data1 = [int(i) for i in [0, 34964, 38510, 42056, 45606, 49151, 52696, 56244, 59790, 63338, 66885, 70432, 73980, 77527, 81072, 84620, 88167, 91714, 95261, 98807, 102357, 105903, 109448, 112996, 116543, 120091, 123637, 127184, 130733, 134279, 137823, 141373, 144918, 148466, 152010, 155558,
                              159105, 162653, 166199, 169747, 173295, 176842, 180387, 183935, 187483, 191031, 194576, 198122, 201670, 205218, 208764, 212312, 215860, 219407, 222951, 226499, 230047, 233594, 237138, 240686, 244234, 247780, 251327, 254875, 258420, 261969, 265515, 269063, 272611, 276157, 279705]]
    hit1 = 1
    CD = 50
    是否有护石 = 1

    MP = [800, 6000]
    无色消耗 = 5

    def 装备护石(self):
        self.倍率 *= 1.36
        self.CDR *= 0.9


class 技能29(主动技能):
    名称 = '真龙焚天'
    所在等级 = 85
    等级上限 = 50
    学习间隔 = 5
    等级精通 = 40

    data0 = [int(i) for i in [0, 167928, 206869, 245809, 284750, 323689, 362631, 401570, 440510, 479451, 518391, 557331, 596274, 635212, 674154, 713092, 752035, 790973, 829912, 868852, 907795, 946734, 985675, 1024614, 1063555, 1102495, 1141433, 1180376, 1219315, 1258256, 1297199, 1336138, 1375079, 1414018, 1452959, 1491898,
                              1530836, 1569777, 1608718, 1647660, 1686599, 1725540, 1764479, 1803420, 1842359, 1881301, 1920238, 1959181, 1998122, 2037063, 2076002, 2114942, 2153883, 2192823, 2231761, 2270702, 2309643, 2348586, 2387523, 2426466, 2465404, 2504345, 2543284, 2582225, 2621165, 2660106, 2699047, 2737988, 2776927, 2815868, 2854809]]
    hit0 = 1
    data1 = [int(i) for i in [0, 2876, 3546, 4213, 4880, 5548, 6216, 6882, 7552, 8219, 8885, 9553, 10219, 10887, 11556, 12223, 12890, 13557, 14225, 14893, 15560, 16228, 16895, 17563, 18230, 18896, 19566, 20233, 20899, 21565, 22233, 22901, 23572, 24238, 24905,
                              25571, 26240, 26908, 27575, 28243, 28909, 29576, 30244, 30911, 31579, 32245, 32915, 33582, 34248, 34915, 35585, 36254, 36920, 37587, 38254, 38922, 39592, 40257, 40923, 41590, 42259, 42926, 43594, 44263, 44929, 45597, 46265, 46932, 47600, 48266, 48935]]
    hit1 = 0
    data2 = [int(i) for i in [0, 40709, 50150, 59590, 69030, 78470, 87910, 97349, 106791, 116230, 125670, 135110, 144551, 153989, 163431, 172870, 182310, 191751, 201192, 210630, 220071, 229511, 238953, 248390, 257832, 267270, 276711, 286151, 295592, 305030, 314471, 323913, 333351, 342792, 352232,
                              361672, 371112, 380553, 389992, 399431, 408872, 418311, 427753, 437190, 446634, 456072, 465513, 474951, 484393, 493832, 503274, 512712, 522154, 531591, 541034, 550473, 559912, 569353, 578793, 588232, 597672, 607114, 616552, 625993, 635434, 644874, 654314, 663753, 673195, 682632, 692074]]
    hit2 = 0
    CD = 180.0

    MP = [2500, 8000]
    无色消耗 = 10

    形态 = ["烈焰", "圣光"]

    def 形态变更(self, 形态, char: Character):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "烈焰":
            self.hit0 = 1
            self.hit1 = 0
            self.hit2 = 0
        if 形态 == "圣光":
            self.hit0 = 0
            self.hit1 = 32
            self.hit2 = 1


class 技能30(主动技能):
    名称 = '式神灭却·合'
    所在等级 = 95
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40

    # 力驱部分
    data0 = [int(i) for i in [0, 25304, 27871, 30439, 33006, 35573, 38140, 40707, 43274, 45841, 48409, 50977, 53543, 56110, 58678, 61245, 63812, 66378, 68946, 71513, 74081, 76648, 79215, 81782, 84349, 86916, 89483, 92050, 94617, 97185, 99752, 102319, 104886, 107453, 110020, 112587,
                              115154, 117723, 120289, 122856, 125423, 127991, 130558, 133124, 135691, 138259, 140826, 143394, 145960, 148528, 151095, 153662, 156229, 158796, 161363, 163930, 166498, 169065, 171632, 174199, 176766, 179333, 181900, 184467, 187034, 189602, 192169, 194736, 197304, 199870, 202437]]
    hit0 = 1
    data1 = [int(i) for i in [0, 12652, 13936, 15219, 16503, 17786, 19070, 20354, 21637, 22921, 24204, 25488, 26771, 28055, 29338, 30622, 31906, 33189, 34473, 35756, 37040, 38323, 39607, 40890, 42174, 43458, 44742, 46025, 47308, 48592, 49876, 51160, 52442, 53726,
                              55011, 56294, 57578, 58861, 60145, 61428, 62712, 63995, 65279, 66563, 67846, 69130, 70413, 71697, 72980, 74264, 75547, 76831, 78115, 79398, 80682, 81965, 83249, 84532, 85816, 87099, 88383, 89667, 90950, 92234, 93517, 94801, 96084, 97368, 98651, 99935, 101219]]
    hit1 = 1
    data2 = [int(i) for i in [0, 37957, 41807, 45658, 49509, 53360, 57210, 61061, 64911, 68763, 72614, 76464, 80314, 84166, 88016, 91867, 95718, 99568, 103419, 107270, 111120, 114971, 118822, 122672, 126523, 130374, 134225, 138075, 141926, 145776, 149628, 153479, 157328, 161179, 165031, 168881,
                              172732, 176583, 180433, 184284, 188135, 191985, 195837, 199687, 203537, 207388, 211240, 215090, 218940, 222791, 226642, 230493, 234344, 238193, 242045, 245896, 249746, 253597, 257448, 261298, 265149, 269000, 272850, 276701, 280552, 284402, 288253, 292105, 295955, 299805, 303656]]
    hit2 = 1
    data3 = [int(i) for i in [0, 12652, 13936, 15219, 16503, 17786, 19070, 20354, 21637, 22921, 24204, 25488, 26771, 28055, 29338, 30622, 31906, 33189, 34473, 35756, 37040, 38323, 39607, 40890, 42174, 43458, 44742, 46025, 47308, 48592, 49876, 51160, 52442, 53726,
                              55011, 56294, 57578, 58861, 60145, 61428, 62712, 63995, 65279, 66563, 67846, 69130, 70413, 71697, 72980, 74264, 75547, 76831, 78115, 79398, 80682, 81965, 83249, 84532, 85816, 87099, 88383, 89667, 90950, 92234, 93517, 94801, 96084, 97368, 98651, 99935, 101219]]
    hit3 = 4
    # 法驱部分
    data4 = [int(i) for i in [0, 5715, 6295, 6875, 7454, 8034, 8614, 9194, 9774, 10353, 10934, 11513, 12092, 12673, 13252, 13833, 14412, 14991, 15572, 16151, 16731, 17311, 17891, 18470, 19050, 19630, 20210, 20790, 21369, 21950, 22529, 23108, 23689, 24268, 24849,
                              25428, 26007, 26588, 27167, 27747, 28327, 28907, 29487, 30066, 30646, 31226, 31806, 32385, 32966, 33545, 34124, 34705, 35284, 35865, 36444, 37023, 37604, 38183, 38763, 39343, 39923, 40503, 41082, 41662, 42242, 42822, 43401, 43982, 44561, 45141, 45721]]
    hit4 = 0
    data5 = [int(i) for i in [0, 36739, 40466, 44194, 47921, 51648, 55375, 59103, 62830, 66557, 70284, 74012, 77739, 81466, 85193, 88921, 92648, 96375, 100102, 103830, 107557, 111284, 115011, 118739, 122466, 126193, 129920, 133648, 137375, 141102, 144829, 148557, 152284, 156011, 159738, 163466,
                              167193, 170920, 174647, 178375, 182102, 185829, 189556, 193284, 197010, 200738, 204465, 208193, 211919, 215647, 219374, 223102, 226828, 230556, 234283, 238011, 241737, 245465, 249192, 252920, 256646, 260374, 264101, 267829, 271555, 275283, 279010, 282738, 286464, 290192, 293919]]
    hit5 = 0
    CD = 60

    MP = [960, 7200]
    无色消耗 = 7

    形态 = ["烈焰", "圣光"]

    def 形态变更(self, 形态, char: Character):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "烈焰":
            self.hit0 = 1
            self.hit1 = 1
            self.hit2 = 1
            self.hit3 = 4
            self.hit4 = 0
            self.hit5 = 0
        if 形态 == "圣光":
            self.hit0 = 0
            self.hit1 = 0
            self.hit2 = 0
            self.hit3 = 0
            self.hit4 = 15
            self.hit5 = 1


class 技能31(被动技能):
    名称 = '式神之悟'
    所在等级 = 95
    等级上限 = 50
    学习间隔 = 3
    等级精通 = 40
    非关联技能 = ['基本攻击', '空斩打']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.18 + 0.02 * self.等级, 5)


class 技能32(主动技能):
    名称 = '雷鸣怒海·火啸山崩'
    所在等级 = 100
    等级上限 = 50
    学习间隔 = 5
    等级精通 = 40

    data0 = [int(i) for i in [0, 21691, 26720, 31750, 36779, 41810, 46839, 51870, 56898, 61930, 66959, 71989, 77018, 82049, 87078, 92108, 97137, 102168, 107197, 112227, 117256, 122286, 127316, 132346, 137375, 142405, 147435, 152465, 157494, 162524, 167554, 172584, 177613, 182643, 187674,
                              192704, 197733, 202763, 207793, 212823, 217852, 222882, 227912, 232942, 237971, 243001, 248030, 253061, 258090, 263120, 268149, 273180, 278209, 283239, 288268, 293299, 298328, 303358, 308387, 313419, 318448, 323478, 328507, 333538, 338567, 343597, 348626, 353657, 358686, 363716, 368745]]
    hit0 = 5
    data1 = [int(i) for i in [0, 21691, 26720, 31750, 36779, 41810, 46839, 51870, 56898, 61930, 66959, 71989, 77018, 82049, 87078, 92108, 97137, 102168, 107197, 112227, 117256, 122286, 127316, 132346, 137375, 142405, 147435, 152465, 157494, 162524, 167554, 172584, 177613, 182643, 187674,
                              192704, 197733, 202763, 207793, 212823, 217852, 222882, 227912, 232942, 237971, 243001, 248030, 253061, 258090, 263120, 268149, 273180, 278209, 283239, 288268, 293299, 298328, 303358, 308387, 313419, 318448, 323478, 328507, 333538, 338567, 343597, 348626, 353657, 358686, 363716, 368745]]
    hit1 = 1
    data2 = [int(i) for i in [0, 173527, 213766, 254004, 294242, 334481, 374718, 414956, 455194, 495433, 535671, 575909, 616147, 656385, 696623, 736861, 777100, 817338, 857576, 897815, 938053, 978291, 1018530, 1058768, 1099006, 1139245, 1179483, 1219721, 1259960, 1300198, 1340436, 1380674, 1420912, 1461149, 1501387, 1541626,
                              1581864, 1622102, 1662340, 1702579, 1742817, 1783055, 1823294, 1863532, 1903770, 1944009, 1984247, 2024485, 2064724, 2104962, 2145200, 2185438, 2225677, 2265914, 2306152, 2346391, 2386628, 2426866, 2467104, 2507343, 2547581, 2587819, 2628058, 2668296, 2708534, 2748773, 2789011, 2829249, 2869488, 2909726, 2949964]]
    hit2 = 1
    data3 = [int(i) for i in [0, 13015, 16032, 19050, 22068, 25086, 28104, 31122, 34140, 37158, 40176, 43193, 46210, 49229, 52246, 55264, 58282, 61300, 64318, 67336, 70354, 73372, 76389, 79408, 82425, 85444, 88462, 91480, 94498, 97514, 100532, 103550, 106568, 109586, 112603, 115622,
                              118639, 121658, 124675, 127694, 130711, 133730, 136747, 139765, 142784, 145801, 148818, 151836, 154853, 157872, 160889, 163908, 166925, 169944, 172961, 175979, 178997, 182015, 185033, 188051, 191070, 194087, 197105, 200123, 203139, 206158, 209175, 212193, 215211, 218229, 221247]]
    hit3 = 10
    CD = 290

    MP = [4027, 12888]
    无色消耗 = 15


class classChange(Character):
    def __init__(self):
        self.实际名称 = 'exorcist'
        self.名称 = '神启·驱魔师'
        self.角色 = '圣职者(男)'

        self.职业 = '驱魔师'

        self.武器选项 = ['念珠', '战斧']
        self.输出类型选项 = ['物理百分比', '魔法百分比']
        self.防具精通属性 = ['力量', '智力']
        self.类型 = '物理百分比'
        self.武器类型 = "战斧"
        self.防具类型 = '板甲'  # 布甲#板甲#重甲
        技能列表 = []
        技能序号 = {}
        i = 0
        while i >= 0:
            try:
                tem = eval('技能'+str(i)+'()')
                tem.基础等级计算()
                技能序号[tem.名称] = i
                技能列表.append(tem)
                i += 1
            except:
                i = -1
        self.技能栏 = 技能列表
        self.技能序号 = 技能序号
        self.buff = 1.76

        super().__init__()

    def 装备基础(self):
        if self.类型 == '物理百分比':
            self.防具类型 = '板甲'
        if self.类型 == '魔法百分比':
            self.防具类型 = '布甲'
        super().装备基础()

    def 职业特殊计算(self):
        基本攻击 = self.get_skill_by_name('基本攻击')
        空斩打 = self.get_skill_by_name('空斩打')

        空斩打.倍率 *= 1+0.1*基本攻击.TP等级
